What is @google-cloud/pubsub?
The @google-cloud/pubsub npm package is a client library for accessing Google Cloud Pub/Sub, a fully-managed real-time messaging service that allows you to send and receive messages between independent applications. This package provides an easy-to-use API to interact with Google Cloud Pub/Sub and is designed to handle the complexities of the underlying API operations.
What are @google-cloud/pubsub's main functionalities?
Publishing Messages
This feature allows you to publish messages to a topic. The code sample demonstrates how to create a PubSub client, get a reference to a topic, and publish a message to that topic.
const {PubSub} = require('@google-cloud/pubsub');
const pubsub = new PubSub();
const topic = pubsub.topic('my-topic');
const messageBuffer = Buffer.from('Hello, world!');
topic.publish(messageBuffer);
Subscribing to Topics
This feature enables you to subscribe to a topic and receive messages. The code sample shows how to create a PubSub client, get a reference to a subscription, and set up an event handler to process received messages.
const {PubSub} = require('@google-cloud/pubsub');
const pubsub = new PubSub();
const subscription = pubsub.subscription('my-subscription');
subscription.on('message', message => {
console.log('Received message:', message.data.toString());
message.ack();
});
Managing Topics and Subscriptions
This feature covers the management of topics and subscriptions, including creating and deleting them. The code sample illustrates how to create a new topic and delete an existing subscription.
const {PubSub} = require('@google-cloud/pubsub');
const pubsub = new PubSub();
// Create a new topic
pubsub.createTopic('new-topic').then(response => {
console.log('Topic created:', response[0].name);
});
// Delete a subscription
pubsub.subscription('old-subscription').delete();
Other packages similar to @google-cloud/pubsub
aws-sdk
The AWS SDK for JavaScript provides a similar messaging service through Amazon SNS (Simple Notification Service) and SQS (Simple Queue Service). While AWS SDK supports both pub/sub and queue-based messaging, @google-cloud/pubsub is specifically optimized for Google Cloud's Pub/Sub service.
azure-sb
Azure-sb is a client library for Azure Service Bus, which also supports pub/sub messaging patterns. Compared to @google-cloud/pubsub, azure-sb is tailored for integration with Azure's ecosystem and supports additional features like message sessions and dead-letter queues.
rascal
Rascal is an abstraction layer over amqplib for RabbitMQ, a popular open-source message broker. Unlike @google-cloud/pubsub, which is a cloud-native service, Rascal with RabbitMQ can be used both on-premises and in the cloud, offering more flexibility in deployment models.
Cloud Pub/Sub is a fully-managed real-time messaging service that allows
you to send and receive messages between independent applications.
This document contains links to an API reference, samples,
and other resources useful to developing Node.js applications.
For additional help developing Pub/Sub applications, in Node.js and other languages, see our
Pub/Sub quickstart,
publisher, and subscriber
guides.
A comprehensive list of changes in each version may be found in
the CHANGELOG.
Read more about the client libraries for Cloud APIs, including the older
Google APIs Client Libraries, in Client Libraries Explained.
Table of contents:
Quickstart
Before you begin
- Select or create a Cloud Platform project.
- Enable billing for your project.
- Enable the Google Cloud Pub/Sub API.
- Set up authentication with a service account so you can access the
API from your local workstation.
Installing the client library
npm install @google-cloud/pubsub
Using the client library
const {PubSub} = require('@google-cloud/pubsub');
async function quickstart(
projectId = 'your-project-id',
topicNameOrId = 'my-topic',
subscriptionName = 'my-sub'
) {
const pubsub = new PubSub({projectId});
const [topic] = await pubsub.createTopic(topicNameOrId);
console.log(`Topic ${topic.name} created.`);
const [subscription] = await topic.createSubscription(subscriptionName);
subscription.on('message', message => {
console.log('Received message:', message.data.toString());
process.exit(0);
});
subscription.on('error', error => {
console.error('Received error:', error);
process.exit(1);
});
topic.publish(Buffer.from('Test message!'));
}
Running gRPC C++ bindings
For some workflows and environments it might make sense to use the C++ gRPC implementation,
instead of the default one (see: #770):
To configure @google-cloud/pubsub
to use an alternative grpc
transport:
-
npm install grpc
, adding grpc
as a dependency.
-
instantiate @google-cloud/pubsub
with grpc
:
const {PubSub} = require('@google-cloud/pubsub');
const grpc = require('grpc');
const pubsub = new PubSub({grpc});
Samples
Samples are in the samples/
directory. Each sample's README.md
has instructions for running its sample.
The Google Cloud Pub/Sub Node.js Client API Reference documentation
also contains samples.
Supported Node.js Versions
Our client libraries follow the Node.js release schedule.
Libraries are compatible with all current active and maintenance versions of
Node.js.
If you are using an end-of-life version of Node.js, we recommend that you update
as soon as possible to an actively supported LTS version.
Google's client libraries support legacy versions of Node.js runtimes on a
best-efforts basis with the following warnings:
- Legacy versions are not tested in continuous integration.
- Some security patches and features cannot be backported.
- Dependencies cannot be kept up-to-date.
Client libraries targeting some end-of-life versions of Node.js are available, and
can be installed through npm dist-tags.
The dist-tags follow the naming convention legacy-(version)
.
For example, npm install @google-cloud/pubsub@legacy-8
installs client libraries
for versions compatible with Node.js 8.
Versioning
This library follows Semantic Versioning.
This library is considered to be stable. The code surface will not change in backwards-incompatible ways
unless absolutely necessary (e.g. because of critical security issues) or with
an extensive deprecation period. Issues and requests against stable libraries
are addressed with the highest priority.
More Information: Google Cloud Platform Launch Stages
Contributing
Contributions welcome! See the Contributing Guide.
Please note that this README.md
, the samples/README.md
,
and a variety of configuration files in this repository (including .nycrc
and tsconfig.json
)
are generated from a central template. To edit one of these files, make an edit
to its templates in
directory.
License
Apache Version 2.0
See LICENSE